/*
 * Copyright 2016-present the IoT DC3 original author or authors.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

package io.github.pnoker.common.constant.driver;

import io.github.pnoker.common.constant.common.ExceptionConstant;

/**
 * 消息 相关常量
 *
 * @author pnoker
 * @version 2025.9.0
 * @since 2022.1.0
 */
public class RabbitConstant {

    // Arguments
    public static final String MESSAGE_TTL = "x-message-ttl";
    public static final String AUTO_DELETE = "x-auto-delete";
    public static final String ROUTING_REGISTER_UP_PREFIX = "dc3.r.register.up.";
    public static final String ROUTING_REGISTER_DOWN_PREFIX = "dc3.r.register.down.";
    public static final String ROUTING_DRIVER_EVENT_PREFIX = "dc3.r.event.driver.";
    public static final String ROUTING_DEVICE_EVENT_PREFIX = "dc3.r.event.device.";
    public static final String ROUTING_DRIVER_METADATA_PREFIX = "dc3.r.metadata.driver.";
    public static final String ROUTING_DRIVER_COMMAND_PREFIX = "dc3.r.command.driver.";
    public static final String ROUTING_DEVICE_COMMAND_PREFIX = "dc3.r.command.device.";
    public static final String ROUTING_POINT_VALUE_PREFIX = "dc3.r.value.point.";
    public static final String ROUTING_MQTT_PREFIX = "dc3.r.mqtt.";
    // Register
    public static String TOPIC_EXCHANGE_REGISTER = "dc3.e.register";
    public static String QUEUE_REGISTER_UP = "dc3.q.register.up";
    public static String QUEUE_REGISTER_DOWN_PREFIX = "dc3.q.register.down.";
    // Event
    public static String TOPIC_EXCHANGE_EVENT = "dc3.e.event";
    public static String QUEUE_DRIVER_EVENT = "dc3.q.event.driver";
    public static String QUEUE_DEVICE_EVENT = "dc3.q.event.device";
    // Metadata
    public static String TOPIC_EXCHANGE_METADATA = "dc3.e.metadata";
    public static String QUEUE_DRIVER_METADATA_PREFIX = "dc3.q.metadata.driver.";
    // Command
    public static String TOPIC_EXCHANGE_COMMAND = "dc3.e.command";
    public static String QUEUE_DRIVER_COMMAND_PREFIX = "dc3.q.command.driver.";
    public static String QUEUE_DEVICE_COMMAND_PREFIX = "dc3.q.command.device.";
    // Value
    public static String TOPIC_EXCHANGE_VALUE = "dc3.e.value";
    public static String QUEUE_POINT_VALUE = "dc3.q.value.point";

    // Mqtt
    public static String TOPIC_EXCHANGE_MQTT = "dc3.e.mqtt";
    public static String QUEUE_MQTT = "dc3.q.mqtt";

    private RabbitConstant() {
        throw new IllegalStateException(ExceptionConstant.UTILITY_CLASS);
    }

}
